「余談を書こう」
「もともと余談だらけという気もするけど」
「まあそういうな」
「それで?」
「もらったステッカーにこう書いてあった」
「凄い言葉だね。ITの未来は全てって」
「しかし、当たり前の話だ。誰かがコードを書かないと何もできないのがコンピュータというものだ。あらゆる可能性はコードを書く人つまり開発者次第だ」
「確かにそれはそうだが」
「更にこんな内容もあったぞ」
「凄いね、yourPassionを引数にProduceメソッドを呼ぶとnewWorldができるのか」
「うん。『君のパッション』から新しい世界が出来てくるわけだ」
「MSの凄さが良く分かるね。こういうことをバルマー氏のような偉い人までずばっと言えるとはね。本当に世界を変える気があるよ」
「ところがね。同じイベントでも温度差があるんだ」
「というと?」
「プログラマは誰がやっても同じ、という形にする方が良いと考える人もいる」
「どういうこと?」
「つまり、プログラマは交換可能な部品であるべきだって考え方だろうね」
「人間じゃないか。それを交換可能って」
「予測可能なプロセスを計画するにはその方が都合が良いのだろう」
「しかし、だからとって人間には個人差というものもあるだろう」
「つまりこれが間違った意味での工業化の理想だ」
「工業化?」
「工場の量産ラインに従事する人は簡単に入れ替えできるから、ソフトウェア開発もそうであるべきだという二重の間違いさ」
「二重? どことどこ?」
「量産ラインだから簡単に人が入れ替えられると思うのが間違い。また、基本的に常に一品もののカスタムなソフトを作るソフトウェアに量産ラインはあり得ない」
「でも大量にプレスして売ることもあるじゃないか」
「その場合、量産されるのはパッケージであってソフトではない。パッケージを量産することはあり得るが、ソフト開発は基本的に1回限りだ。パッケージを1つ作ることにstrcpy関数を最初から書き直すなんてことはあり得ない」
「そうか、パッケージ量産はソフト開発とは違う工程ってことだね」
「そうそう。これはよくある錯誤なんだ。たとえば、ベテランなら1行、中堅なら100行、ビギナーなら書けないという事態もよくある。ところが、管理者はよく思い違いをしてしまう」
「というと?」
「反抗的なベテランをクビして従順なビギナーを大量にやとって穴を埋めようとする」
「するとどうなる?」
「ビギナーの生産性が低いことは分かっているから人数を増やしたり、期間を長く取ったりするが、それだけでは上手く行かない」
「なぜ上手く行かないの?」
「生産性の差を数倍と見積もっているが実際は桁違いに違うからだ」
「それは凄い差だね」
「実際はビギナーを大量に雇うより、ベテランを煽てて上手く使った方が、遙かに少ないコスト、少ない時間で問題が解決する可能性がある」
「なぜそうしないのだろう?」
「予測不能だからさ」
「なぜ予測できないんだろう?」
「yourPassionつまり君の情熱次第だからだろう。情熱を持てるかどうかで生産性に大きな差が出てしまう」
「つまりどういうことだ?」
「交換可能な部品扱いされて情熱などかきたてられるわけがない」
「じゃあどうしたらいいの?」
「交換不可能な人間扱いするのがスタートラインだろうね」
「でも、それだけじゃダメだろう?」
「もちろんさ。夢の持てる目標や、中身のある報酬も必要さ」
「現実には夢の持てない仕事だってあるだろう?」
「そういう場合は次こそ面白い仕事を取ってくるから早く終わらせろと言って情熱をかき立てられる」
「なるほど。でもさ、そう思って無い人もいるんだろう?」
「そうだね。けっこう多いと思うよ。MS社内や周辺にもけっこういると思うぞ」
「それで未来は良くなるの?」
「さあどうかな。そのあたりはわからない」
「それじゃコードを書くことに挑戦していいか分からないじゃないか」
「いいや、それは簡単に分かるぞ」
「なぜ?」
「新しい世界(newWorld)は、コードを書かないと得られないからだ。他人が書いたコードをいくら横取りしても、それは既存の世界にしかならない」
「でもさ、他人のソースに手を加えて新しい世界ができるかもしれないじゃないか」
「ほらもう、手を加えた時点でコードを書いてるぜ」
「あっ」
「完全にゼロからの出発はまずあり得ないから、自分のソフトの一部に他人のコードが入ってくることはある意味でやむを得ない。しかし、目玉の部分は自分で書かないと新しい世界にならない。当たり前だ」
「つまりどういうこと?」
「能書きを並べる時間があったらコードを書け、以上だ」